Listing 9 shows the CreateSampleVectorData routine, which creates the vector data used in Listing 10 and Listing 20 .
Listing 9 Utility routine CreateSampleVectorData
Handle CreateSampleVectorData( long whichOne )
{
OSErr err;
Handle pathData = nil, vectorData = nil;
ComponentInstance ci = nil;
gxPoint aPoint;
err = OpenADefaultComponent( decompressorComponentType,
kVectorCodecType, &ci );
if ( err ) goto bail;
err = CurveNewPath( ci, &pathData );
if ( err ) goto bail;
if ( pathData == nil )
{ err = memFullErr; goto bail; }
switch ( whichOne ) {
case 1:
aPoint.x = Long2Fix( 0 );
aPoint.y = Long2Fix( 100 );
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 0, false );
if ( err ) goto bail;
aPoint.x = Long2Fix( 100 );
aPoint.y = Long2Fix( 0 );
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 1, false );
if ( err ) goto bail;
aPoint.x = Long2Fix( 200 );
aPoint.y = Long2Fix( 100 );
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 2, false );
if ( err ) goto bail;
aPoint.x = Long2Fix( 100 );
aPoint.y = Long2Fix( 200 );
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 3, false );
if ( err ) goto bail;
break;
case 2:
aPoint.x = 0;
aPoint.y = 100;
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 0, false );
if ( err ) goto bail;
aPoint.x = 100;
aPoint.y = 0;
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 1, false );
if ( err ) goto bail;
aPoint.x = 200;
aPoint.y = 100;
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 2, false );
if ( err ) goto bail;
aPoint.x = 100;
aPoint.y = 200;
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 3, false );
if ( err ) goto bail;
break;
case 3:
aPoint.x = 0;
aPoint.y = 0;
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 0, true );
if ( err ) goto bail;
aPoint.x = 200;
aPoint.y = 50;
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 1, true );
if ( err ) goto bail;
aPoint.x = 400;
aPoint.y = 400;
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 2, true );
if ( err ) goto bail;
break;
case 4:
aPoint.x = Long2Fix( 0 );
aPoint.y = Long2Fix( 0 );
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 0, true );
if ( err ) goto bail;
aPoint.x = Long2Fix( 200 );
aPoint.y = Long2Fix( 50 );
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 1, true );
if ( err ) goto bail;
aPoint.x = Long2Fix( 400 );
aPoint.y = Long2Fix( 400 );
err = CurveInsertPointIntoPath( ci, &aPoint, pathData,
0, 2, true );
if ( err ) goto bail;
break;
}
err = CurveCreateVectorStream( ci, &vectorData );
if ( err ) goto bail;
err = CurveAddPathAtomToVectorStream( ci, pathData, vectorData );
if ( err ) goto bail;
err = CurveAddZeroAtomToVectorStream( ci, vectorData );
if ( err ) goto bail;
bail:
if ( pathData ) DisposeHandle( pathData );
if ( ci ) CloseComponent( ci );
if ( err != noErr ) {
if ( vectorData ) {
DisposeHandle( vectorData );
vectorData = nil;
}
}
return vectorData;
}
| Previous | Chapter Contents | Chapter Top | Next |